Static Detection of Deadlocks in Erlang
نویسندگان
چکیده
We address the problem of detecting two different kinds of possible deadlocks in Erlang programs using static analysis. Our analysis is completely automatic, fast and effective in detecting deadlocks while avoiding most false alarms. We have integrated our analysis in dialyzer, a widely used tool for detecting software defects in Erlang programs, and demonstrate its effectiveness on open-source libraries and applications of considerable size. Despite the fact that most of these applications have been used over a long period of time and are reasonably well-tested, our analysis has detected a number of previously unknown deadlocks in their code that may have devastating effects at runtime.
منابع مشابه
Towards a Deadlock Analysis for Erlang Programs
We argue that there is a need for automated veri cation of absence of deadlocks in concurrent programs. We brie y describe how absence of deadlocks can be showed, in general, for a program, how the necessary information can be gathered, and the use of formal methods. We discuss timeouts as a method of run-time deadlock detection, and why they remain necessary in some situations, and we suggest ...
متن کاملTowards a Deadlock Analysis for Erlang Programs 1
We argue that there is a need for automated veri cation of absence of deadlocks in concurrent programs. We brie y describe how absence of deadlocks can be showed, in general, for a program, how the necessary information can be gathered, and the use of formal methods. We discuss timeouts as a method of run-time deadlock detection, and why they remain necessary in some situations, and we suggest ...
متن کاملStatic Detection of Race Conditions in Erlang
We address the problem of detecting some commonly occurring kinds of race conditions in Erlang programs using static analysis. Our analysis is completely automatic, fast and scalable, and avoids false alarms by taking language characteristics into account. We have integrated our analysis in dialyzer, a commonly used tool for detecting software defects in Erlang programs which is part of Erlang/...
متن کاملDetecting Potential Deadlocks with Static Analysis and Run-Time Monitoring
Concurrent programs are notorious for containing errors that are difficult to reproduce and diagnose. A common kind of concurrency error is deadlock, which occurs when a set of threads is blocked each trying to acquire a lock held by another thread in that set. Static and dynamic (run-time) analysis techniques exist to detect deadlocks. Havelund’s GoodLock algorithm detects potential deadlocks ...
متن کاملModel Checking Erlang Programs - LTL-Propositions and Abstract Interpretation
Frank Huch Christian-Albrechts-University of Kiel,Germany [email protected] Abstract: We present an approach for the formal verification of Erlang programs using abstract interpretation and model checking. In previous work we defined a framework for the verification of Erlang programs using abstract interpretation and LTL model checking. The application of LTL model checking yields som...
متن کامل